/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author CarlosAndre
 */
import java.util.Vector;
/**  Descripción: implementación de la intefaz Stack
     * Nombre: StackVector
     * Parametros: E (dato genérico)
     * Pre-condicion: 
     * Post-condicion: 
     */
public class StackVector<E> implements Stack<E> {
    private Vector<E> data;
    /**Descripción: Constructor de StackVector
     * Nombre: StackVector
     * Parametros: 
     * Pre-condicion: 
     * Post-condicion: se crea un Stack vacio
     */
    public StackVector()
    {
        data = new Vector<E>();
    }
    
   
    /** Descripción: agrega un item al Stack
     * Nombre: Push
     * Parametros: item de tipo E (dato generico)
     * Pre-condicion: 
     * Post-condicion: es agregado un item al Stack
     */
   public void push(E item){
       data.add(item);
   }
   
   /** Descripción: elimina un item del Stack
     * Nombre: Pop
     * Parametros: item de tipo E (dato generico)
     * Pre-condicion: tiene que haber un item
     * Post-condicion: elimina el ultimo item del Stack
     */
   public E pop(){
       return data.remove(size()-1);
   }
  
   /** Descripción: revisa el ultimo valor del Stack
     * Nombre: Peek
     * Parametros: ninguno
     * Pre-condicion: No debe estar vacia el Stack
     * Post-condicion: El ultimo valor en el Stack
     */
   public E peek(){
       return data.get(size() - 1);
   }
       
  
  
   /** Descripción: se verifica el tamaño del Stack
     * Nombre: size
     * Parametros: ninguno
     * Pre-condicion: 
     * Post-condicion: devuelve el tamaño del Stack
     */
   public int size(){
       return data.size();
   }
   /** Descripción: se verifica si esta vacio el Stack
     * Nombre: Empty
     * Parametros: ninguno
     * Pre-condicion: 
     * Post-condicion: devuelve true o false
     */
   public boolean empty(){
       return size()==0;
   }
}
